package com.dave.closure;

import java.util.List;
import java.util.stream.IntStream;

/**
 * @Author Dave
 * @Date 2018/8/9
 * @Description 闭包
 */
public class Closure {


    ///////////////////////////////////////////////////////////////////////////
    // 闭包就是一个函数的实例，且它可以无限 制地访问那个函数的非本地变量。
    // 例如，闭包可以作为参数传递给另一个函数。它也可以访 问和修改其作用域之外的变量。
    // 现在，Java 8的Lambda和匿名类可以做类似于闭包的事情: 它们可以作为参数传递给方法，
    // 并且可以访问其作用域之外的变量。但有一个限制:它们不 能修改定义Lambda的方法的局部变量的内容。
    ///////////////////////////////////////////////////////////////////////////


    public static void main(String[] args) {
        //变量是final的
        int a = 10;
        int ab=20;
        int cd=30;
        int ef=30;
        int sb=40;
        IntStream.range(1, 10)
                .forEach(e -> {
                    System.out.println(e * a);
                });

    }
}
